1

理解函数

文字居多,各位看官不要厌烦呀~~

  • 在JavaScript中,每个函数其实都是一个Function对象。(不是有句话说:一切皆对象?)

  • 函数总是会返回一个值,但是一个过程有可能返回一个值,也有可能不返回。(所以函数不是过程~)

    • 如果一个函数中没有使用return语句,则它默认返回undefined。要想返回一个特定的值,则函数必须使用 return 语句来指定一个所要返回的值。(使用new关键字调用一个构造函数除外)。

  • 调用函数时,传递给函数的值被称为函数的实参(值传递),对应位置的函数参数名叫作形参。

    • 如果实参是一个包含原始值(数字,字符串,布尔值)的变量,则就算函数在内部改变了对应形参的值,返回后,该实参变量的值也不会改变。

    • 如果实参是一个对象引用,则对应形参会和该实参指向同一个对象。假如函数在内部改变了对应形参的值,返回后,实参指向的对象的值也会改变。

终于有代码了,撒花~~

/* 定义函数 myFunc */
 function myFunc(theObject)
 {
   //实参 mycar 和形参 theObject 指向同一个对象.
   theObject.brand = "Toyota";
 }
 
 /*
  * 定义变量 mycar;
  * 创建并初始化一个对象;
  * 将对象的引用赋值给变量 mycar
  */
 var mycar = {
   brand: "Honda",
   model: "Accord",
   year: 1998
 };

 /* 弹出 'Honda' */
 window.alert(mycar.brand);

 /* 将对象引用传给函数 */
 myFunc(mycar);

 /*
  * 弹出 'Toyota',对象的属性已被修改.
  */
 console.log(mycar.brand);

(关于函数中的this,顺便说点)

在函数执行时,this 关键字并不会指向正在运行的函数本身,而是指向调用该函数的对象。
所以,如果你想在函数内部获取函数自身的引用,只能使用函数名或者使用arguments.callee属性
(严格模式下不可用),如果该函数是一个匿名函数,则你只能使用后者。


幸运儿
916 声望139 粉丝